package com.gitee.chili.leisure.service;

import com.gitee.chili.leisure.base.BaseService;
import com.gitee.chili.leisure.domain.EntryRoom;
import com.gitee.chili.leisure.repository.EntryRoomRepository;

import java.util.List;
import java.util.Objects;

/**
 * IEntryRoomService
 *
 * @author week solider
 * @since 2020.09.04
 */
public interface IEntryRoomService extends BaseService<Long, EntryRoom, EntryRoomRepository> {

    /**
     * 玩家是否在房间内
     *
     * @param memberId 玩家id
     * @return 是 {@code true}，否则 {@code false}
     */
    default boolean isRoomInside(Long memberId) {
        return Objects.nonNull(roomInside(memberId));
    }

    /**
     * 判断房间是否存在，同时获取房间人数
     * 1.如果获取到人数的情况下，那么房间一定是存在的
     */
    Integer queryRoomMeanwhileGetPeopleNum(Long roomNum);

    /**
     * 更新状态为离开
     *
     * @param memberId 玩家id
     */
    void leaveRoom(Long memberId);

    /**
     * 获取在房间的内的记录
     *
     * @param roomNum 房间号
     */
    List<EntryRoom> queryRoomMember(Long roomNum);

    /**
     * 获取玩家正在游戏的信息
     */
    EntryRoom roomInside(Long memberId);

}
